<?php
/**
 * 中安未来ocr基础接口封装
 */
namespace soa\ocr\sinosecuOcr;
use soa\check\EnvCheck;
use artisan\http;
use artisan\cache;
use artisan\format;

class sinosecuOcr{
    private static $username = 'test';//用户白名单   test, zhansan
    private static $apiUrl = 'http://10.20.31.99:9999/cxfServerX/doAllCardRecon';//接口地址

    /**
     * 身份证识别
     * @param $imgPath //图片全路径
     * @param int $isFront //是否身份证正面 2-正面；3-背面；101-（默认）自动识别正反面
     */
    public static function idCardOcr($imgPath, $isFront=101){
        //获取图片后缀
        $pointLocation = strrpos($imgPath, '.');
        $imgSuffix = substr($imgPath, $pointLocation+1);

        $postData = [
            'username' => self::$username,//用户白名单
            'paramdata'=> self::setRecgnPlainParam($imgPath, $isFront, '', 'null'),//图像文件base64与其它编码拼接
            'signdata' => 'NULL',//带引号字符串且大写
            'imgtype'  => $imgSuffix,//图片格式，如 jpg，bmp
        ];
        $postJson = json_encode($postData);//转成json字符串
//json字符串以post实体的形式传递
//        $retXml = http::post(
//            self::$apiUrl,
//            [],
//            [
//                'CURLOPT_POSTFIELDS' => $postJson,
//                'CURLOPT_RETURNTRANSFER' => true,
//                'CURLOPT_HTTPHEADER' => [
//                    'Content-Type: application/json',
//                    'Content-Length: '.strlen($postJson)
//                ],
//            ]
//        );
        $time = time();
        $retXml = http::post(self::$apiUrl, $postJson);

//        $ch = curl_init(self::$apiUrl);
//        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
//        curl_setopt($ch, CURLOPT_POSTFIELDS,$postJson);
//        curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
//        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
//                'Content-Type: application/json',
//                'Content-Length: ' . strlen($postJson))
//        );
//
//        $retXml = curl_exec($ch);
//
//        var_dump($retXml);
        $retArr = format::xml2array($retXml);//转换成数组

        if(empty($retXml) || empty($retArr)){
            logDebug([
                'timeOut' => time()-$time,
                'retXml'  => $retXml,
                'retArr'  => $retArr,
                'imgPath' => $imgPath,
                'postData'=> $postData,
            ], 'soa_sinosecuIdCardOcrErr', true);
        }
//        var_dump($retArr);
//        var_dump($retArr['data']['message']);
//        var_dump($retArr['data']['cardsinfo']);
//        var_dump($retArr['data']['cardsinfo']['card']['item'][1]);
//        var_dump($retArr['data']['cardsinfo']['card']['item'][2]);
//        var_dump($retArr['data']['cardsinfo']['card']['item'][3]);
//        var_dump($retArr['data']['cardsinfo']['card']['item'][4]);
//        var_dump($retArr['data']['cardsinfo']['card']['item'][5]);
//        var_dump($retArr['data']['cardsinfo']['card']['item'][6]);
//        var_dump($retArr['data']['cardsinfo']['card']['card_attr']);


        return $retArr;
    }

    /**
     * 辅助函数
     * @param $imgPath //图片全路径
     * @param $type //证件类型：二代身份证-2；行驶证-6；驾照-5；银行卡-17；车牌-19
     * @param string $option //固定为 空字符串 ''
     * @param null $password // 固定位 null
     * @return string
     */
//    protected static function setRecgnPlainParam($imgPath, $type, $option="", $password=null){
    protected static function setRecgnPlainParam($imgPath, $type, $option="", $password='null'){
        $imgBase64Str = base64_encode(file_get_contents($imgPath)).'==##'.$type.'==##'.$option.'==##'.$password;
//        var_dump($imgBase64Str);
        return $imgBase64Str;
    }
}